package com.itheima.datastructure.binarytree;

/**
 * 对称二叉树
 */
//    对称二叉树
//    1
//    / \
//   2   2
//  / \ / \
// 3  4 4  3

@SuppressWarnings("all")
public class E04Leetcode101 {
    public boolean isSymmetric(TreeNode root) {
        return check(root.left, root.right);
    }


    private boolean check(TreeNode left, TreeNode right) {
        if (left == null && right == null) {
            return true;
        }
        // left 和 right 不能同时为 null
        if (left == null || right == null) {
            return false;
        }
        //当前节点的值是否相同
        if (left.val != right.val) {
            return false;
        }

        //比较子节点~
        //左节点的左子树和右节点的右子树是否相同
        boolean check = check(left.left, right.right);

        // 左节点的右子树和右节点的左子树是否相同
        boolean check1 = check(left.right, right.left);
        // 返回结果
        return check && check1;
    }
}
